﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using HotelSoft.HotelManagement_BUS;
using HotelSoft.HotelManagement_DTO;
using HotelSoft.HotelManagement_DAO;
using System.Collections;

namespace HotelSoft.HotelManagement_GUI
{
    public partial class frmBaoCaoTheoLoai : Form
    {
        // Define the CS_DROPSHADOW constant
        private const int CS_DROPSHADOW = 0x00020000;

        // Override the CreateParams property
        protected override CreateParams CreateParams
        {
            get
            {
                CreateParams cp = base.CreateParams;
                cp.ClassStyle |= CS_DROPSHADOW;
                return cp;
            }
        }


        BaoCaoDoanhThuTheoLoaiBUS busDT = new BaoCaoDoanhThuTheoLoaiBUS();
        Double temp = 1;
        int iBaoCaoTheo;
        //DateTime tNgay;
        DataTable kqBaoCao = new DataTable();
        public frmBaoCaoTheoLoai()
        {
            InitializeComponent();
            TienIch thamso = new TienIch();
            cbchon.Items.Add(thamso.dsYeuCauBaoCao[1].ToString());//Tháng
            cbchon.Items.Add(thamso.dsYeuCauBaoCao[2].ToString());//Quy
            cbchon.Items.Add(thamso.dsYeuCauBaoCao[3].ToString());//Năm
            cbchon.SelectedIndex = 0;
            cbchon2.Items.Add(thamso.dsYeuCauBaoCao[1].ToString());//Tháng
            cbchon2.Items.Add(thamso.dsYeuCauBaoCao[2].ToString());//Quy
            cbchon2.Items.Add(thamso.dsYeuCauBaoCao[3].ToString());//Năm
            cbchon2.SelectedIndex = 0;
        }
        public frmBaoCaoTheoLoai(int _BaoCaoTheo)
        {
            InitializeComponent();
            TienIch thamso = new TienIch();
            cbchon.Items.Add(thamso.dsYeuCauBaoCao[1].ToString());//Tháng
            cbchon.Items.Add(thamso.dsYeuCauBaoCao[2].ToString());//Quy
            cbchon.Items.Add(thamso.dsYeuCauBaoCao[3].ToString());//Năm
            iBaoCaoTheo = _BaoCaoTheo;
            cbchon.SelectedIndex = _BaoCaoTheo;
            cbchon2.Items.Add(thamso.dsYeuCauBaoCao[1].ToString());//Tháng
            cbchon2.Items.Add(thamso.dsYeuCauBaoCao[2].ToString());//Quy
            cbchon2.Items.Add(thamso.dsYeuCauBaoCao[3].ToString());//Năm
            iBaoCaoTheo = _BaoCaoTheo;
            cbchon2.SelectedIndex = _BaoCaoTheo;

        }

        private void bthoat_Click(object sender, EventArgs e)
        {
            this.Dispose();
        }

        private void btthoat1_Click(object sender, EventArgs e)
        {
            this.Dispose();
        }

        private void btbaocao1_Click(object sender, EventArgs e)
        {
            try
            {
                iBaoCaoTheo = cbchon2.SelectedIndex;
                //tNgay = Convert.ToDateTime(dtinput2.Text);
                switch (iBaoCaoTheo)
                {
                    case 0:
                        THONGKE_THANGDTO dto = new THONGKE_THANGDTO();
                        dto.THANG = int.Parse(cboThangMD.SelectedItem.ToString());
                        dto.NAM = int.Parse(txtNamMD_Thang.Text);
                        kqBaoCao = busDT.BaoCaoMatDoThang(dto);
                        break;
                    case 1:
                        THONGKE_QUIDTO dt = new THONGKE_QUIDTO();
                        dt.QUI = int.Parse(cboQuiMD.SelectedItem.ToString());
                        dt.NAM = int.Parse(txtNamMD_Qui.Text);
                        kqBaoCao = busDT.BaoCaoMatDoQui(dt);
                        break;
                    case 2:
                        THONGKE_NAMDTO d = new THONGKE_NAMDTO();
                        d.NAM = int.Parse(txtNamMD_Nam.Text);
                        kqBaoCao = busDT.BaoCaoMatDoNam(d);
                        break;
                }
                gvMatDo.DataSource = kqBaoCao.DefaultView;
            }
            catch { }
        }

        private void txtbaocao_Click(object sender, EventArgs e)
        {
            try
            {
                iBaoCaoTheo = cbchon.SelectedIndex;
                //tNgay = Convert.ToDateTime(dtinput.Text);
                switch (iBaoCaoTheo)
                {
                    case 0:
                        THONGKE_THANGDTO dto = new THONGKE_THANGDTO();
                        dto.THANG = int.Parse(cboThang.SelectedItem.ToString());
                        dto.NAM = int.Parse(txtNam_Thang.Text);
                        kqBaoCao = busDT.BaoCaoDoanhThuThang(dto);
                        break;
                    case 1:
                        THONGKE_QUIDTO dt = new THONGKE_QUIDTO();
                        dt.QUI = int.Parse(cboQui.SelectedItem.ToString());
                        dt.NAM = int.Parse(txtNam_Qui.Text);
                        kqBaoCao = busDT.BaoCaoDoanhThuQui(dt);
                        break;
                    case 2:
                        THONGKE_NAMDTO d = new THONGKE_NAMDTO();
                        d.NAM = int.Parse(txtNam_Nam.Text);
                        kqBaoCao = busDT.BaoCaoDoanhThuNam(d);
                        break;
                }
                gvBCLoaiPhong.DataSource = kqBaoCao.DefaultView;
            }
            catch { }
        }

        private void txtxuatexel_Click(object sender, EventArgs e)
        {
            //MessageBox.Show("Xuất Excel");
            string filename = "BaoCaoDoanhThu.xls";
            XuatBaoCaoDoanhThu.ExportToExcel(kqBaoCao, filename);
            XuatBaoCaoDoanhThu.TryToDisplayGeneratedFile(filename);
        }

        private void btxuathtml_Click(object sender, EventArgs e)
        {
            //MessageBox.Show("Xuất HTML");
            string filename = "BaoCaoDoanhThu.html";
            XuatBaoCaoDoanhThu.ExportToHtml(kqBaoCao, filename);
            XuatBaoCaoDoanhThu.TryToDisplayGeneratedFile(filename);
        }

        private void btxuatexel1_Click(object sender, EventArgs e)
        {
            //MessageBox.Show("Xuất Excel");
            string filename = "BaoCaoMatDo.xls";
            XuatBaoCaoMatDo.ExportToExcel(kqBaoCao, filename);
            XuatBaoCaoMatDo.TryToDisplayGeneratedFile(filename);
        }

        private void btxuathtml1_Click(object sender, EventArgs e)
        {
            //MessageBox.Show("Xuất HTML");
            string filename = "BaoCaoMatDo.html";
            XuatBaoCaoMatDo.ExportToHtml(kqBaoCao, filename);
            XuatBaoCaoMatDo.TryToDisplayGeneratedFile(filename);
        }

        private void cbchon_SelectedIndexChanged(object sender, EventArgs e)
        {
            switch (cbchon.Text)
            {
                case "Tháng":
                    {
                        //Xử lý theo ý bạn
                        pnNam.Visible = false;
                        pnQui.Visible = false;
                        pnThang.Visible = true;
                        cboThang.Focus();
                        lblTrungbinh.Text = "(Trung bình theo ngày)";
                        break;
                    }
                case "Quý":
                    {
                        //Xử lý theo ý bạn
                        pnNam.Visible = false;
                        pnQui.Visible = true;
                        pnThang.Visible = false;
                        cboQui.Focus();
                        lblTrungbinh.Text = "(Trung bình theo tháng)";
                        break;
                    }
                case "Năm":
                    {
                        //Xử lý theo ý bạn
                        pnNam.Visible = true;
                        pnQui.Visible = false;
                        pnThang.Visible = false;
                        txtNam_Nam.Focus();
                        txtNam_Nam.SelectAll();
                        lblTrungbinh.Text = "(Trung bình theo tháng)";
                        break;
                    }
            }

        }

        private void cbchon2_SelectedIndexChanged(object sender, EventArgs e)
        {
            switch (cbchon2.Text)
            {
                case "Tháng":
                    {
                        //Xử lý theo ý bạn
                        pnNamMD.Visible = false;
                        pnQuiMD.Visible = false;
                        pnThangMD.Visible = true;
                        cboThangMD.Focus();
                        lblTiLe.Text = "(Tỉ lệ theo ngày)";
                        break;
                    }
                case "Quý":
                    {
                        //Xử lý theo ý bạn
                        pnNamMD.Visible = false;
                        pnQuiMD.Visible = true;
                        pnThangMD.Visible = false;
                        cboQuiMD.Focus();
                        lblTiLe.Text = "(Tỉ lệ theo tháng)";
                        break;
                    }
                case "Năm":
                    {
                        //Xử lý theo ý bạn
                        pnNamMD.Visible = true;
                        pnQuiMD.Visible = false;
                        pnThangMD.Visible = false;
                        txtNamMD_Nam.Focus();
                        txtNamMD_Nam.SelectAll();
                        lblTiLe.Text = "(Tỉ lệ theo tháng)";
                        break;
                    }
            }
        }

        private void txtNamMD_Thang_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar))
                e.Handled = true;
        }

        private void txtNamMD_Qui_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar))
                e.Handled = true;
        }

        private void txtNamMD_Nam_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar))
                e.Handled = true;
        }

        private void txtNamMD_Qui_Validating(object sender, CancelEventArgs e)
        {
            if (txtNamMD_Qui.Text.Length == 0 || txtNamMD_Qui.Text.Trim() == "")
            {
                txtNamMD_Qui.Text = "0";
            }
            if (int.Parse(txtNamMD_Qui.Text) < 1990 || int.Parse(txtNamMD_Qui.Text) >= 9999)
            {
                MessageBox.Show("Hãy nhập lại năm (1990 -> 9999)");
                txtNamMD_Qui.Focus();
                return;
            }
        }

        private void txtNamMD_Thang_Validating(object sender, CancelEventArgs e)
        {
            if (txtNamMD_Thang.Text.Length == 0 || txtNamMD_Thang.Text.Trim() == "")
            {
                txtNamMD_Thang.Text = "0";
            }
            if (int.Parse(txtNamMD_Thang.Text) < 1990 || int.Parse(txtNamMD_Thang.Text) >= 9999)
            {
                MessageBox.Show("Hãy nhập lại năm (1990 -> 9999)");
                txtNamMD_Thang.Focus();
                return;
            }
        }

        private void txtNamMD_Nam_Validating(object sender, CancelEventArgs e)
        {
            if (txtNamMD_Nam.Text.Length == 0 || txtNamMD_Nam.Text.Trim() == "")
            {
                txtNamMD_Nam.Text = "0";
            }
            if (int.Parse(txtNamMD_Nam.Text) < 1990 || int.Parse(txtNamMD_Nam.Text) >= 9999)
            {
                MessageBox.Show("Hãy nhập lại năm (1990 -> 9999)");
                txtNamMD_Nam.Focus();
                return;
            }
        }

        private void txtNam_Nam_Validating(object sender, CancelEventArgs e)
        {
            if (txtNam_Nam.Text.Length == 0 || txtNam_Nam.Text.Trim() == "")
            {
                txtNam_Nam.Text = "0";
            }
            if (int.Parse(txtNam_Nam.Text) < 1990 || int.Parse(txtNam_Nam.Text) >= 9999)
            {
                MessageBox.Show("Hãy nhập lại năm (1990 -> 9999)");
                txtNam_Nam.Focus();
                return;
            }
        }

        private void txtNam_Nam_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar))
                e.Handled = true;

        }

        private void txtNam_Thang_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar))
                e.Handled = true;
        }

        private void txtNam_Qui_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar))
                e.Handled = true;
        }

        private void txtNam_Qui_Validating(object sender, CancelEventArgs e)
        {
            if (txtNam_Qui.Text.Length == 0 || txtNam_Qui.Text.Trim() == "")
            {
                txtNam_Qui.Text = "0";
            }
            if (int.Parse(txtNam_Qui.Text) < 1990 || int.Parse(txtNam_Qui.Text) >= 9999)
            {
                MessageBox.Show("Hãy nhập lại năm (1990 -> 9999)");
                txtNam_Qui.Focus();
                return;
            }
        }

        private void txtNam_Thang_Validating(object sender, CancelEventArgs e)
        {
            if (txtNam_Thang.Text.Length == 0 || txtNam_Thang.Text.Trim() == "")
            {
                txtNam_Thang.Text = "0";
            }
            if (int.Parse(txtNam_Thang.Text) < 1990 || int.Parse(txtNam_Thang.Text) >= 9999)
            {
                MessageBox.Show("Hãy nhập lại năm (1990 -> 9999)");
                txtNam_Thang.Focus();
                return;
            }
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            this.Opacity = this.Opacity + 0.1;
            if (this.Opacity == temp)
                timer1.Enabled = false;
        }

        private void frmBaoCaoTheoLoai_Load(object sender, EventArgs e)
        {
            timer1.Enabled = true;
        }

        private void Btn_InDS_Click(object sender, EventArgs e)
        {
            switch (cbchon.Text)
            {
                case "Tháng":
                    {
                        if (cboThang.SelectedIndex != -1 && int.Parse(txtNam_Thang.Text) != 0)
                        {
                            frmReport_BaoCaoDoanhThu frm = new frmReport_BaoCaoDoanhThu();
                            frm.LOAI = 1;
                            frm.THANG = int.Parse(cboThang.SelectedItem.ToString());
                            frm.NAM = int.Parse(txtNam_Thang.Text);
                            frm.ShowDialog();
                        }
                        else
                        {
                            MessageBox.Show("Bạn hãy nhập tháng và năm.");
                        }
                        break;
                    }
                case "Quý":
                    {
                        if (cboQui.SelectedIndex != -1 && int.Parse(txtNam_Qui.Text) != 0)
                        {
                            frmReport_BaoCaoDoanhThu frm = new frmReport_BaoCaoDoanhThu();
                            frm.LOAI = 2;
                            frm.QUI = int.Parse(cboQui.SelectedItem.ToString());
                            frm.NAM = int.Parse(txtNam_Qui.Text);
                            frm.ShowDialog();
                        }
                        else
                        {
                            MessageBox.Show("Bạn hãy nhập Quí và Năm.");
                        }
                        break;
                    }
                case "Năm":
                    {
                        if (int.Parse(txtNam_Nam.Text) != 0)
                        {
                            frmReport_BaoCaoDoanhThu frm = new frmReport_BaoCaoDoanhThu();
                            frm.LOAI = 3;
                            frm.NAM = int.Parse(txtNam_Nam.Text);
                            frm.ShowDialog();
                        }
                        else
                        {
                            MessageBox.Show("Bạn hãy nhập năm.");
                        }
                        break;
                    }
            }

        }

        private void btnClose_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btInDS1_Click(object sender, EventArgs e)
        {
            switch (cbchon2.Text)
            {
                case "Tháng":
                    {
                        if (cboThangMD.SelectedIndex != -1 && int.Parse(txtNamMD_Thang.Text) != 0)
                        {
                            frmReport_BaoCaomatdo frm = new frmReport_BaoCaomatdo();
                            frm.LOAI = 1;
                            frm.THANG = int.Parse(cboThangMD.SelectedItem.ToString());
                            frm.NAM = int.Parse(txtNamMD_Thang.Text);
                            frm.ShowDialog();
                        }
                        else
                        {
                            MessageBox.Show("Bạn hãy nhập tháng và năm.");
                        }
                        break;
                    }
                case "Quý":
                    {
                        if (cboQuiMD.SelectedIndex != -1 && int.Parse(txtNamMD_Qui.Text) != 0)
                        {
                            frmReport_BaoCaomatdo frm = new frmReport_BaoCaomatdo();
                            frm.LOAI = 2;
                            frm.QUI = int.Parse(cboQuiMD.SelectedItem.ToString());
                            frm.NAM = int.Parse(txtNamMD_Qui.Text);
                            frm.ShowDialog();
                        }
                        else
                        {
                            MessageBox.Show("Bạn hãy nhập Quý và Năm.");
                        }
                        break;
                    }
                case "Năm":
                    {
                        if (int.Parse(txtNamMD_Nam.Text) != 0)
                        {
                            frmReport_BaoCaomatdo frm = new frmReport_BaoCaomatdo();
                            frm.LOAI = 3;
                            frm.NAM = int.Parse(txtNamMD_Nam.Text);
                            frm.ShowDialog();
                        }
                        else
                        {
                            MessageBox.Show("Bạn hãy nhập năm.");
                        }
                        break;
                    }
            }
        }
    }
}
